#include "bootloader.h"

void (*jump2app)(void);


// void download_firmware()
void turn_to_app(void)
{
    /* 检查栈顶地址是否合法，也就是 APP 存放的起始地址是否合法 */
    if(((*(__IO uint32_t *)APPLICATION_ADDR) & 0x2FFE0000) == 0x20000000)
    {
        /* 获取APP程序起始地址，代码区第二个字（起始地址+4   Flash 位置存储的数据） */
        jump2app = (void (*)(void)) (*(volatile uint32_t *)(APPLICATION_ADDR + 4));
        /* 初始化堆栈指针（用户代码区的第一个字用于存放栈顶地址） */
        __set_MSP(*(volatile uint32_t *)APPLICATION_ADDR);
        /* 跳转到用户代码区 */
        jump2app();
    }
    else
    {
        // printf("APP address error\r\n");
    }
}
